package com.example.demo.algorithm.sort.choice;

import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.Objects;

public class Sort {
    private Sort(){};
    /*判断数组是否有序  要从 i 到 i -1 每轮循环判断*/
    private static<T extends  Comparable<T>> boolean bool(T[] data){
        for (int i = 0; i < data.length; i++) {
            //判断从i 到 i-1 每轮循环期间是否是排序的值
            if(data[i - 1].compareTo(data[i]) > 0){
                return  false;
            }
        }
        return  true;
    }
    /*根据不同排序选择不同的数组排序*/
    public static<T extends Comparable<T>,E> void sortTest(String SortName ,T[] dat) throws  Exception{
        long staTime = System.nanoTime();
        Class<E> c = (Class<E>) Class.forName("com.example.demo.algorithm.sort.choice.ChoiceSort");
        // 获取所有 public 方法
        Method[] methods = c.getMethods();
        // 获取 serach 方法
        Method method1 = c.getMethod("serach",Comparable[].class);
        if(SortName.equals("serach")){
            ChoiceSort.serach(dat);
        }
        long endTime = System.nanoTime();
        if(!Sort.bool(dat)){
            throw  new RuntimeException(SortName);
        }
        double times = (staTime - endTime) / 1000000000.0;
    }

    public static void main(String[] args) {
        Student[] dat ={ new Student("贰",2),new Student("壹",1)};
        try {
            Sort.sortTest("serach",dat);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
